home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / xcode / unchain.asm < prev    next >
Encoding:
Assembly Source File  |  1993-10-18  |  2.8 KB  |  110 lines

  1. ;----------------------------------------------------------------------------:
  2. ; SILVERMOON                                                                 :
  3. ;                                                                             :
  4. ; VGA driving code and macros    (C) John Connors 1993                         :
  5. ;----------------------------------------------------------------------------:
  6.  
  7.         IDEAL
  8.         P286N
  9.  
  10.         MODEL    HUGE,C
  11.         
  12.         INCLUDE "VGA.INC"
  13.         INCLUDE "STRUCTS.INC"                
  14.  
  15.         PUBLIC    unchain_vga
  16.         
  17. ;----------------------------------------------------------------------------:
  18. ; set VGA write mode                                                         :
  19. ;----------------------------------------------------------------------------:
  20.  
  21.  
  22. MACRO        Write_Mode Mode
  23.         MOV DX,Graphics_Address_Port
  24.         MOV AL,05h
  25.         OUT DX,AL
  26.         INC DX
  27.         IN    AL,DX
  28.         AND AL,NOT 011b
  29.         OR    AL,Mode
  30.         OUT DX,AL
  31. ENDM
  32.  
  33. ;----------------------------------------------------------------------------:
  34. ; set VGA Map Mask                                                             :
  35. ;----------------------------------------------------------------------------:
  36.  
  37. MACRO        Set_Map_Mask Mask
  38.             Out_Index    Sequencer_Address_Port,Map_Mask,Mask
  39. ENDM
  40.  
  41. ;----------------------------------------------------------------------------:
  42. ; output to an indexed address/data port                                     :
  43. ;----------------------------------------------------------------------------:
  44.  
  45. MACRO        Out_Index Port,Index,OutByte
  46.         MOV DX,Port
  47.         MOV AX,((OutByte)*0100h)+Index
  48.         OUT DX,AX
  49. ENDM
  50.  
  51. ;----------------------------------------------------------------------------:
  52. ;                DATA SEGMENT                                                 :
  53. ;----------------------------------------------------------------------------:
  54.  
  55.             DATASEG
  56.  
  57.  
  58. CRTC_Parameters:
  59.          dw      00014h  ;    turn off dword mode
  60.          dw      0e317h  ;    turn on byte mode
  61.  
  62. ;----------------------------------------------------------------------------:
  63. ;            CODE SEGMENT                                                     :
  64. ;----------------------------------------------------------------------------:
  65.  
  66.  
  67.             CODESEG
  68.             
  69.  
  70. ;----------------------------------------------------------------------------:
  71. ; Unchain                                                                     :
  72. ; 'Unchains' the VGA display so that 64k of VGA memory is mapped into four     :
  73. ; 16k bitplanes in the host memory - suitable for hardware scrolling         :
  74. ;----------------------------------------------------------------------------:
  75.  
  76.  
  77. PROC    unchain_vga     
  78.         USES    DS,DX,CX,AX,SI
  79.  
  80.         MOV     AH,0                            ; set VGA mode 0x13
  81.         MOV     AL,13h
  82.         INT     10h
  83.         Out_Index    Sequencer_Address_Port,Memory_Mode,6
  84.         Out_Index    Graphics_Address_Port,Miscellaneous,5
  85.         MOV     DX,CRTC_Address_Port
  86.         MOV     AL,Vertical_Retrace_End
  87.         OUT     DX,AL   
  88.         INC     DX
  89.         IN        AL,DX
  90.         AND     AL,NOT 80h                        ; clobber write protect
  91.         OUT     DX,AL
  92.         DEC     DX
  93.         CLD
  94.         MOV     AX,SEG CRTC_Parameters
  95.         MOV     DS,AX
  96.         MOV     SI,OFFSET CRTC_Parameters
  97.         MOV     CX,2
  98. @@Set_CRTC_Parameters_Loop:
  99.         MOV     AX,[WORD SI]
  100.         INC     SI
  101.         INC     SI
  102.         OUT     DX,AX
  103.         LOOP    @@Set_CRTC_Parameters_Loop        ; set up CRTC chip
  104.         RET
  105.  
  106. ENDP    unchain_vga
  107.  
  108.  
  109.     END
  110.